package model

import (
	"strings"

	// 数据库驱动
	_ "github.com/go-sql-driver/mysql"
)

// xorm 缓存
// 1. 当使用了Distinct,Having,GroupBy方法将不会使用缓存
// 2. 在Get或者Find时使用了Cols,Omit方法，则在开启缓存后此方法无效，系统仍旧会取出这个表中的所有字段。
// 3. 在使用Exec方法执行了方法之后，可能会导致缓存与数据库不一致的地方。因此如果启用缓存，尽量避免使用Exec。如果必须使用，则需要在使用了Exec之后调用ClearCache手动做缓存清除的工作

// Page 分页基本数据
type Page struct {
	Pi   int    `json:"page" form:"page" query:"page"`             //分页页码
	Ps   int    `json:"pageSize" form:"pageSize" query:"pageSize"` //分页大小
	Mult string `json:"param" form:"param" query:"param"`          //多条件信息
}

type PageDTO struct {
	Values interface{} `json:"values"`
	Total  int64       `json:"total"`
}

// Trim 去除空白字符
func (p *Page) Trim() string {
	p.Mult = strings.TrimSpace(p.Mult)
	return p.Mult
}

// Stat 检查状态
func (p *Page) Stat() error {
	return nil
}

type IptId struct {
	Id int `query:"id" json:"id"` //仅包含Id的请求
}

// Naver 上下页
type Naver struct {
	Prev string
	Next string
}

// State 统计信息
type State struct {
	Post int `json:"post"`
	Page int `json:"page"`
	Cate int `json:"cate"`
	Tag  int `json:"tag"`
}

func inOf(goal int, arr []int) bool {
	for idx := range arr {
		if goal == arr[idx] {
			return true
		}
	}
	return false
}

// Reply 生成api文档使用
// 代码里未使用，也不要使用
type Reply struct {
	Code int    `json:"code" example:"200"`
	Msg  string `json:"msg" example:"提示信息"`
}
